package com.keshihao.vod.service.impl;

import com.aliyun.vod.upload.impl.UploadVideoImpl;
import com.aliyun.vod.upload.req.UploadStreamRequest;
import com.aliyun.vod.upload.resp.UploadStreamResponse;
import com.keshihao.vod.service.VodService;
import com.keshihao.vod.utils.ConstantVodUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

/**
 * @Author Mr.Keshihao
 * @Date 2020/6/12 15:58
 * @Version 1.0
 */
@Service
public class VodServiceImpl implements VodService {

  @Override
  public String uploadVideoAly(MultipartFile file) {

    try {
      /**
       * title 在阿里云中显示的名称
       * fileName 上传文件原始名称
       * inputStream 视频输入流
       */
      String originalFilename = file.getOriginalFilename();
      String title = originalFilename.substring(0, originalFilename.lastIndexOf("."));
      String fileName = originalFilename;
      InputStream inputStream = file.getInputStream();
      UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.KEY_ID, ConstantVodUtils.KEY_SECRET, title, fileName, inputStream);
      UploadVideoImpl uploader = new UploadVideoImpl();
      UploadStreamResponse response = uploader.uploadStream(request);

      String videoId = null;
      if (response.isSuccess()) {
        videoId = response.getVideoId();
      } else { //如果设置回调URL无效，不影响视频上传，可以返回VideoId同时会返回错误码。其他情况上传失败时，VideoId为空，此时需要根据返回错误码分析具体错误原因
        videoId = response.getVideoId();
        System.out.print("VideoId=" + response.getVideoId() + "\n");
        System.out.print("ErrorCode=" + response.getCode() + "\n");
        System.out.print("ErrorMessage=" + response.getMessage() + "\n");
      }

      return videoId;
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }


  }

}
